from django.urls import path
from rest_framework_jwt.views import obtain_jwt_token

from .views.home_views import UserTotalCountView, UserDayCountView, UserActiveCountView, UserOrderCountView, UserMonthCountView, GoodsDayView
from .views.user_views import UserView
from .views.sku_views import SKUGoodsView, SKUGoodsCateView, SPUSimpleView, SpecOptView
from .views.spu_views import SPUGoodsView, BrandeView
from .views.spec_views import SPUSpecView
from .views.option_views import SPUSpecOptionView
from .views.image_views import SKUImageView
from .views.order_views import OrderView
from .views.perm_views import PermViewSet
from .views.group_views import GroupViewSet
from .views.admin_views import AdminViewSet
from .views.brand_views import BrandViews
from .views.channel_views import ChannelViews

urlpatterns = [
    # 后台登录接口
    path('authorizations/', obtain_jwt_token),

    # 后台首页-用户总数接口
    path('statistical/total_count/', UserTotalCountView.as_view()),

    # 后台首页-日增用户数接口
    path('statistical/day_increment/', UserDayCountView.as_view()),

    # 后台首页-日活跃用户数接口
    path('statistical/day_active/', UserActiveCountView.as_view()),

    # 后台首页-日下单用户数接口
    path('statistical/day_orders/', UserOrderCountView.as_view()),

    # 后台首页-月增用户统计接口
    path('statistical/month_increment/', UserMonthCountView.as_view()),

    # 后台首页-日分类商品访问量接口
    path('statistical/goods_day_views/', GoodsDayView.as_view()),

    # 获取用户列表数据 and 新建用户接口
    path('users/', UserView.as_view()),

    # 获取/新建SKU表数据接口
    path('skus/', SKUGoodsView.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除SKU表单个数据接口
    path('skus/<int:pk>/', SKUGoodsView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # SKU管理-新增商品-获取三级分类接口
    path('skus/categories/', SKUGoodsCateView.as_view()),

    # SKU管理-新增商品-获取SPU数据接口
    path('goods/simple/', SPUSimpleView.as_view()),

    # SKU管理-新增商品-获取SPU商品规格和选项数据接口
    path('goods/<int:pk>/specs/', SpecOptView.as_view()),

    # 获取/新建SPU表数据接口
    path('goods/', SPUGoodsView.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除SPU表单个数据接口
    path('goods/<int:pk>/', SPUGoodsView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # SPU管理-新增商品-获取品牌数据接口
    path('goods/brands/simple/', BrandeView.as_view()),

    # SPU管理-新增商品-获取一级分类数据接口
    path('goods/channel/categories/', SKUGoodsCateView.as_view()),

    # SPU管理-新增商品-获取二、三级分类数据接口
    path('goods/channel/categories/<int:pk>/', SKUGoodsCateView.as_view()),

    # 获取/新建SPEC表数据接口
    path('goods/specs/', SPUSpecView.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除SPEC表单个数据接口
    path('goods/specs/<int:pk>/', SPUSpecView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取/新建option表数据接口
    path('specs/options/', SPUSpecOptionView.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除option表单个数据接口
    path('specs/options/<int:pk>/', SPUSpecOptionView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 规格选项管理-新增规格选项-获取规格数据接口
    path('goods/specs/simple/', SPUSpecView.as_view({
        'get': 'new_list',
    })),

    # 获取/新建图片数据接口
    path('skus/images/', SKUImageView.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除图片数据接口
    path('skus/images/<int:pk>/', SKUImageView.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 保存图片-获取SKU表数据接口
    path('skus/simple/', SKUImageView.as_view({
        'get': 'simple_sku',
    })),

    # 获取订单数据接口
    path('orders/', OrderView.as_view({
        'get': 'list',
    })),

    # 获取订单详情数据接口
    path('orders/<int:pk>/', OrderView.as_view({
        'get': 'retrieve',
    })),

    # 获取订单状态数据接口
    path('orders/<str:pk>/status/', OrderView.as_view({
        'patch': 'partial_update',
    })),

    # 获取/新建用户权限数据接口
    path('permission/perms/', PermViewSet.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除用户权限数据接口
    path('permission/perms/<int:pk>/', PermViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取权限类型列表数据
    path('permission/content_types/', PermViewSet.as_view({
        'get': 'content_type',
    })),

    # 获取/新建用户组数据接口
    path('permission/groups/', GroupViewSet.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除用户权限数据接口
    path('permission/groups/<int:pk>/', GroupViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取权限表数据
    path('permission/simple/', GroupViewSet.as_view({
        'get': 'get_simple_prem',
    })),

    # 获取/新建管理员数据接口
    path('permission/admins/', AdminViewSet.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除管理员数据接口
    path('permission/admins/<int:pk>/', AdminViewSet.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取分组表数据
    path('permission/groups/simple/', AdminViewSet.as_view({
        'get': 'get_simple_group',
    })),

    # 获取/新建品牌表数据接口
    path('goods/brands/', BrandViews.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除品牌表数据接口
    path('goods/brands/<int:pk>/', BrandViews.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取/新建频道表数据接口
    path('goods/channels/', ChannelViews.as_view({
        'get': 'list',
        'post': 'create',
    })),

    # 获取单条数据/全更新/删除频道表数据接口
    path('goods/channels/<int:pk>/', ChannelViews.as_view({
        'get': 'retrieve',
        'put': 'update',
        'delete': 'destroy',
    })),

    # 获取频道分组表数据
    path('goods/channel_types/', ChannelViews.as_view({
        'get': 'get_group',
    })),

    # 频道管理-新增频道-获取一级分类数据接口
    path('goods/categories/', SKUGoodsCateView.as_view()),
]
